package com.itfenghuang.day13;

import com.itfenghuang.day12_作业.Studentzuoye;

import java.util.Comparator;
import java.util.HashSet;
import java.util.TreeSet;

public class A02_集合遗留问题 {
/*
        1.Set集合特点:无序   去重  无索引
            Set 集合的两个实现类:
                TreeSeT  HashSet
        2.比较器排序
            需求:19 8 5 10 3用TreeSet集合进行降序
            实现步骤:
                1).使用TreeSet的带参构造创建对象
                    public TreeSet(Comparator<? super E>comparator)
                2).传一Comparator类型的参数进去
                     使用匿名内部类
                3).添加数据
         3.比较器排序与自然排序的区别
            自然排序:类要实现Comparator接口,重写compareTo方法
            比较器排序:使用TreeSet集合的有参构造,传递Comparator类型,重写compare方法
            如何选择?
                自定义类最好选择自然排序
                数字降序,字符串字典反顺序的时候选择比较器排序
         4.HashSet
            数据结构:
            jdk7及以前:哈希表=数组+链表
            jdk8以后:哈希表=数据+链表+红黑树
            哈希值: 通过对象的地址或数字或字符串计算出来的int型的数
            哈希值的获取: 通过Object类中的  hasCode()方法计算
                public  int  hashCode()
             需求:使用Set集合存储学生,要求如果学生的姓名年龄一致的话就认为是同一个人
             HashSet去重: 根据hashCode()方法和equals()方法去重

 */
    public static void main(String[] args) {
//升序
//        TreeSet<Integer> set = new TreeSet<>();
//        set.add(19);
//        set.add(8);
//        set.add(5);
//        set.add(10);
//        set.add(3);
//        System.out.println(set);


//        TreeSet<Integer> set = new TreeSet<>(new Comparator<Integer>() {
////           指定排序规则
//            @Override
//            public int compare(Integer o1, Integer o2) {
////                o1:this  将要存入的元素
////                o2:依次表示集合中的已经存在的元素
//                int i = o2-o1;
//                return i;
//            }
//        });
//
//            set.add(19);
//            set.add(8);
//            set.add(5);
//            set.add(10);
//            set.add(3);
//        System.out.println(set);

//        需求
        HashSet<Studentzuoye> set = new HashSet<>();
        set.add(new Studentzuoye("小贷","女",14));
        set.add(new Studentzuoye("小贷","女",14));
        set.add(new Studentzuoye("小哎","女",15));
        System.out.println(set);
    }
}
